HarmonyOS-鸿蒙app开发 —基于javaAI关键字提取概述

HarmonyOS-鸿蒙app开发 —基于javaAI关键字提取概述

场景介绍

  • 游记摘要

    本API可以从用户编辑的游记长文本中提取出能反映其核心思想的关键词汇,关键词按关键到相对非关键的权重顺序输出,帮助用户快速从长文本中提取出关键信息,快速给游记文章关键信息选择对应的标签上传。

  • 新闻标签

    用户在浏览文章时,对感兴趣的想做收藏,可以使用本API,提取出关键信息,生成对应的标签。用户下次想继续浏览收藏的文章时,不用打开文章,便可通过生成的标签快速了解到文章的核心内容。

接口说明

可用于从新闻和邮件里提取出关键字,便于用户快速获取新闻和邮件的主题。关键字可以为有意义的实体,比如,人名、电影,也可以为非实体的关键词汇,如,上课、考研。

主要接口

表1 关键词提取主要接口

接口名

功能描述

ResponseResult getKeywords(String requestData, int requestType);

同步接口,可用于从新闻和邮件里,提取出关键字后便于用户快速获取新闻和邮件的主题。

ResponseResult getKeywords(final String requestData, final int requestType, final OnResultListener<ResponseResult> listener);

异步接口,可用于从新闻和邮件里,提取出关键字后便于用户快速获取新闻和邮件的主题。

void init(Context context, OnResultListener<Integer> listener, boolean isLoadModel);

绑定NLU服务必须调用初始化服务,使用多个nlu服务接口时,只需要调用一次,异步接口。

void destroy(Context context);

解绑服务,初始化过就在销毁时需要解绑,让资源及时释放。

接口输入值说明

requestData的JSON格式如下:

参数名

是否必选

类型

说明

title

false

String

文章的标题,字符数不超过100。

body

true

String

文章的正文,字符数不超过5000。

number

true

int

需抽取的关键字个数,数值在1到20之间。

callPkg

false

String

调用者名称。

callType

false

int

调用者类型:

  • 0:普通应用(默认)
  • 1:快应用

callVersion

callState

false

false

String

int

调用者版本号。

调用者状态:

  • -1:未知(默认)
  • 0:前台
  • 1:后台

requestType表示请求类型,取值可以从ohos.ai.nlu.NluRequestType选择。

类型

说明

static final int

REQUEST_TYPE_LOCAL=0,本地请求。

接口返回值说明

ResponseResult中responseResult为JSON字符串,体现关键字提取的结果:

参数名

是否必选

类型

说明

code

true

int

结果码。取值为:

  • 0:成功
  • 1:系统正在初始化
  • 2:参数错误
  • 3:系统忙
  • 4:系统异常
  • 5:任务超时
  • 6:其它错误

message

true

String

错误信息

keywords

true

JSONArray

关键字列表,按照权重的顺序返回

参考示例如下:

{

“code”:0,

“message”:“成功”,

“keywords”:[

“上课”,

“一起”

]

}

开发步骤

  1. 在使用关键字提取API时,将实现关键字提取的相关的类添加至工程。

import ohos.ai.nlu.ResponseResult;// 接口返回的结果类

import ohos.ai.nlu.NluClient;// 接口服务类

import ohos.ai.nlu.NluRequestType;// 接口请求类型

import ohos.ai.nlu.OnResultListener;// 异步函数,执行成功的回调结果类

import ohos.ai.nlu.util.NluError;// 接口返回码

  1. 使用NluClient静态类进行初始化,通过异步方式获取服务的连接。
    • context:应用上下文信息,应为ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的实例或子类实例。
    • listener:初始化结果的回调,可以传null。
    • isLoadModel:是否加载模型,如果传true,则在初始化时加载模型;如果传false,则在初始化时不加载模型。
    NluClient.getInstance().init(context, new OnResultListener<Integer>(){

@Override

public void onResult(Integer result){

// 初始化成功回调,在服务初始化成功调用该函数

}

}, true);

  1. 调用获取关键词提取方法得到分析结果,同一个接口提供了同步和异步两个方法,开发者可根据自己需要选择。

同步

String requestData= “{number:2,body:’今天我们一起去上课吧’,title:’一起去上课’}”;

ResponseResult respResult = NluClient.getInstance().getKeywords(requestData, NluRequestType.REQUEST_TYPE_LOCAL);

if (null != respResult)

{

// 获取接口返回结果,参考接口文档返回使用

String result = respResult.getResponseResult();

}

title为可选参数 ,不填的时候只分析正文body。

异步

// 待分析文本

String requestData= “{number:2,body:’今天我们一起去上课吧’,title:’一起去上课’}”;

// 调用接口

NluClient.getInstance().getKeywords(requestData, NluRequestType.REQUEST_TYPE_LOCAL,new OnResultListener<ResponseResult>(){

@Override

public void onResult(ResponseResult respResult)

{

// 异步返回

if(null != respResult && NluError.SUCCESS_RESULT == respResult.getCode())

{

// 获取接口返回结果,参考接口文档返回使用

String result = respResult.getResponseResult();

}

}

});

使用结束调用destroy()方法释放进程资源,如果持续使用建议在进程结束时释放,释放后需要重复2才能再次使用。

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x